import http from '@ohos.net.http'

const BASEURL = 'https://huangjiangjun.top:3002/api/'

export const request = ({url,method = http.RequestMethod.GET,extraData ={},header = {}}) => {
    // 每一个httpRequest对应一个HTTP请求任务，不可复用
    let httpRequest = http.createHttp()

    return new Promise((resolve,reject) => {
        // 用于订阅HTTP响应头，此接口会比request请求先返回。可以根据业务需要订阅此消息
        // 从API 8开始，使用on('headersReceive', Callback)替代on('headerReceive', AsyncCallback)。 8+
        httpRequest.on('headersReceive', (header) => {
            console.info('---header: ----' + JSON.stringify(header))
        })
        httpRequest.request(
            // 填写HTTP请求的URL地址，可以带参数也可以不带参数。URL地址需要开发者自定义。请求的参数可以在extraData中指定
            `${BASEURL}${url}`,
            {
                method, // 可选，默认为http.RequestMethod.GET
                // 开发者根据自身业务需要添加header字段
                header,
                // 当使用POST请求时此字段用于传递内容
                extraData,
                expectDataType: http.HttpDataType.OBJECT
            }, (err, data) => {
                if (!err) {
                    // 取消订阅HTTP响应头事件
                    // httpRequest.off('headersReceive');
                    // 当该请求使用完毕时，调用destroy方法主动销毁
                    httpRequest.destroy();
                    // data.result为HTTP响应内容，可根据业务需要进行解析
                    resolve(data.result)
                } else {
                    console.info('error:' + JSON.stringify(err));
                    reject(err)
                    // 取消订阅HTTP响应头事件
                    // httpRequest.off('headersReceive')
                    // 当该请求使用完毕时，调用destroy方法主动销毁。
                    httpRequest.destroy()
                }
            }
        )
    })
}